Este objeto necessita de um carinho especial porque eles suportam os dados de um processo inteiro como vendas, faturamento, compras, acompanhamento de clientes, etc. Note que podemos juntar tudo num banco de dados se o negócio a ser suportado é pequeno mas se for uma grande empresa você talvez precise até de múltiplos servidores.
Já trabalhei gerenciando 25 servidores MS SQL Server e basicamente 2 pessoas conseguiam fazer o serviço. O restante do pessoal utilizava os servidores mas não mantinham eles.
Abaixo cito as principais queries que são utilizadas em bancos de dados. Tentei colocar só sobre banco de dados mas se eu quiser saber as tabelas do banco de dados temos 2 objetos de interesse unidos.
Os principais comandos sobre bancos de dados são :
| Comando | Efeito | 
|---|---|
| use NomeBanco | Seleciona o banco de dados ( NomeBanco ) a ser trabalhado pelas queries. | 
| SysObjects | |
| select * from sysobjects where xtype='U' ou exec sp_tables | Lista todas as tabelas de Usuário do Banco de dados atual. | 
| select * from sysobjects where xtype='S' | Lista todos os objetos de sistema dentro das tabelas do banco de dados atual. | 
| select * from sysobjects where xtype='P' | Lista todas as Stored Procedures do banco de dados atual | 
| select * from sysobjects where xtype='X' | Exibe todos os índices de todas as tabelas do banco de dados atual | 
| select * from sysobjects where xtype='F' | Exibe todas as Chaves estrangeira ( FK ) do banco de dados atual | 
| select * from sysobjects where xtype='PK' | Lista todas as Chaves Primárias ( PK ) do banco de dados atual | 
| select * from sysobjects where xtype='UQ' | Lista todas as Chaves Unicas do sistema ( Unique Key Constraint ) | 
| select * from sysobjects where xtype='TF' | Lista as Funções cadastradas no sistema. Funções nada mais são que uma sequencia de comandos SQL que retornam qualquer tipo de dados, pode ser um número, texto, tabela, etc. | 
| select * from sysobjects where xtype='IF' | Lista as Funções cadastradas no sistema. | 
| select * from sysobjects where xtype='V' | Lista as views do sistema. Uma view é uma 'visão' particular de um conjunto de dados. Por exemplo, eu posso numa view agrupar inúmeras tabelas e selecionar colunas específicas de cada uma dessas tabelas e com isto dar uma 'visão' específica da informação requerida. Por exemplo, suponha que você queira exibir as vendas por trimestre de um produto e os dados de vendas estão nas tabelas vendas, clientes, vendasProd,vendasFat. Podemos passar parâmetros para a view e ela executará a pesquisa complexa de uma maneira bem facilitada evitando erros. | 
| select * from sysobjects where left(name,3)='TBL' | Lista os Objetos do sistema que tenham as primeiras letras como 'TBL'. No exemplo eu assumi que TBL são prefixos de tabelas mas poderia ser qualquer outra notação dos objetos cadastrados no servidor. | 
| select name from sys.triggers where parent_class=1 | Lista as triggers cadastradas no sistema - MS SQL SRV 2005 | 
| select name from sys.triggers where type='TA' | Lista as triggers cadastradas no sistema que são disparadas depois('After')- MS SQL SRV 2005 | 
| select name from sys.triggers where type='TR' | Lista as triggers cadastradas no sistema que são disparadas antes- MS SQL SRV 2005 | 
| select * from sys.sql_dependencies | Exibe a lista as dependencias de um objeto em relação a outro. Contém informações de dependência entre objetos (exibições, procedimentos e gatilhos) no banco de dados e os objetos (tabelas, exibições e procedimentos) contidos em suas definições. MS SQL SRV 2005. | 
| select * from systypes | Lista todos os tipos de dados do servidor. MS SQL 2000 | 
| select * from sys.systypes | Lista todos os tipos de dados do servidor. MS SQL 2005 | 
| select name from sysobjects where type='TR' | Lista as triggers cadastradas no sistema - MS SQL SRV 2000 | 
| select name from sys.triggers where parent_class=1 | Lista as triggers cadastradas no sistema - MS SQL SRV 2005 | 
| select name from sys.triggers where type='TA' | Lista as triggers cadastradas no sistema que são disparadas depois('After')- MS SQL SRV 2005 | 
| select name from sys.triggers where type='TR' | Lista as triggers cadastradas no sistema que são disparadas antes- MS SQL SRV 2005 | 
| select * from sysdepends | Exibe a lista as dependencias de um objeto em relação a outro. Contém informações de dependência entre objetos (exibições, procedimentos e gatilhos) no banco de dados e os objetos (tabelas, exibições e procedimentos) contidos em suas definições. MS SQL SRV 2000. | 
| select * from sys.sql_dependencies | Exibe a lista as dependencias de um objeto em relação a outro. Contém informações de dependência entre objetos (exibições, procedimentos e gatilhos) no banco de dados e os objetos (tabelas, exibições e procedimentos) contidos em suas definições. MS SQL SRV 2005. | 
| select * from systypes | Lista todos os tipos de dados do servidor. MS SQL 2000 | 
| select * from sys.systypes | Lista todos os tipos de dados do servidor. MS SQL 2005 | 
| SELECT name, physical_name FROM sys.master_files where database_id = db_id('master') | Lista os arquivos que compõe o banco de dados selecionado, tipicamente os arquivos .mdf e .ldf incluindo seus nomes e pastas. | 
| select * from master..sysmessages | Exibe todas as mensagens de erro emitidas pelo servidor- MS SQL 2000 | 
| select * from sys.messages | Exibe todas as mensagens de erro emitidas pelo servidor- MS SQL 2005 | 
| select * from master..syslogins where isntgroup=0 and isntname=0 | Lista os logins efetuados até o momento no servidor - MS SQL SRV 2000 | 
| select * from sys.sql_logins | Lista os logins efetuados até o momento no servidor - MS SQL SRV 2005 | 
| Outras views dos objetos do sistema MS SQL SRV | |
| select * from sysusers | Lista os usuários cadastrados no sistema | 
| select * from syssegments | Segmentos - Não funciona no MS SQL SRV 2019 | 
| select * from sysconstraints | Exibe as constraints cadastradas no sistema. As constraints são Primary Key (PK), Foreign Key (FK), Unique, Not Null, Check, Default. As constraints determinam condições para que o dado 'seja aceitável' ou se 'torne aceitável' numa coluna de uma tabela. | 
| select * from sysfilegroups | Exibe o agrupamento dos arquivos de um banco de dados. Inicialmente só existe o Primário(Primary) | 
| SELECT * FROM master.dbo.sysdatabases | Lista os bancos de dados do sitema. Normalmente são master, tempdb, model, msdb. | 
| Diversas - Sobre bancos de dados e seus componentes | |
| sp_helpuser | Exibe as informações sobre o usuário cadastradas no servidor SQL | 
| DECLARE @db_id smallint; set @db_id = DB_ID(N'master'); print @db_id | Retorna o ID do banco de dados ( db_ID ). Muito útil para cruzar as informações com os objetos do sistema | 
| RAISERROR('Erro na SP10.', 16, 1) | Determinando a saida de uma Procedure com erro. | 
| dbcc checkdb (nome_banco_dados) | Função de teste de bancos | 
| dbcc_chectable(nome_tabela) | Função de teste de bancos de tabelas | 
| Comando | Efeito | 
|---|---|
| use NomeBanco | Seleciona o banco de dados ( NomeBanco ) a ser trabalhado pelas queries. | 
| exec xp_msver | No parâmetro 'File Version' temos a versão do MS SQL Server instalado. Em 'Plaform' e 'File Description' temos se ele é 32 ou 64 bits. | 
| exec sp_helpdevice | Lista os dispositivos do sistema, se existirem. | 
| sp_helpindex sysobjects | Lista os índices do servidor. | 
| sp_lock | Lista os Locks ativos no momento no SQL. | 
| select 'servidor=' + @@servername + ', Versao=' + @@version | Exibe o nome do servidor na Rede e a versão do servidor ms sql. | 
| dbcc showcontig | Exibe a fragmentação das tabelas no bd | 
| exec sp_dboption | Opções do Servidor - Não funciona no MS SQL 2019 | 
| exec sp_configure | Exibe a configuração do Servidor SQL | 
| dbcc memusage | Exibe a utilização de memória - Não funciona no MS SQL 2019. | 
| sp_who | Lista quem esta usando / logado no servidor SQL | 
| select * from sysobjects where xtype='U' ou exec sp_tables | Lista todas as tabelas de Usuário do Banco de dados atual. | 
| select * from sysobjects where xtype='S' | Lista todos os objetos dentro das tabelas de sistemas do MS SQL SRV. | 
| select * from sysobjects where xtype='P' | Lista todas as Stored Procedures do banco de dados atual | 
| select * from sysobjects where xtype='X' | Exibe todos os índices de todas as tabelas do banco de dados atual | 
| select * from sysobjects where xtype='F' | Exibe todas as Chaves estrangeira ( FK ) do banco de dados atual | 
| select * from sysobjects where xtype='PK' | Lista todas as Chaves Primárias ( PK ) do banco de dados atual | 
| select * from sysobjects where xtype='UQ' | Lista todas as Chaves Unicas do sistema ( Unique Key Constraint ) | 
| select * from sysobjects where xtype='TF' | Lista as Funções cadastradas no sistema. Funções nada mais são que uma sequencia de comandos SQL que retornam qualquer tipo de dados, pode ser um número, texto, tabela, etc. | 
| select * from sysobjects where xtype='IF' | Lista as Funções cadastradas no sistema. | 
| select * from sysobjects where xtype='V' | Lista as views do sistema. Uma view é uma 'visão' particular de um conjunto de dados. Por exemplo, eu posso numa view agrupar inúmeras tabelas e selecionar colunas específicas de cada uma dessas tabelas e com isto dar uma 'visão' específica da informação requerida. Por exemplo, suponha que você queira exibir as vendas por trimestre de um produto e os dados de vendas estão nas tabelas vendas, clientes, vendasProd,vendasFat. Podemos passar parâmetros para a view e ela executará a pesquisa complexa de uma maneira bem facilitada evitando erros. | 
| select * from sysusers | Lista os usuários cadastrados no sistema | 
| sp_helpuser | Exibe as informações sobre o usuário cadastradas no servidor SQL | 
| select * from sysobjects where left(name,3)='TBL' | Lista os Objetos do sistema que tenham as primeiras letras como 'TBL'. No exemplo eu assumi que TBL são prefixos de tabelas mas poderia ser qualquer outra notação dos objetos cadastrados no servidor. | 
| select * from syssegments | Segmentos - Não funciona no MS SQL SRV 2019 | 
| select * from sysconstraints | Exibe as constraints cadastradas no sistema. As constraints são Primary Key (PK), Foreign Key (FK), Unique, Not Null, Check, Default. As constraints determinam condições para que o dado 'seja aceitável' ou se 'torne aceitável' numa coluna de uma tabela. | 
| select * from sysfilegroups | Exibe o agrupamento dos arquivos de um banco de dados. Inicialmente só existe o Primário(Primary) | 
| SELECT * FROM master.dbo.sysdatabases | Lista os bancos de dados do sitema. Normalmente são master, tempdb, model, msdb. | 
| select * from sysdepends | Exibe a lista as dependencias de um objeto em relação a outro. Contém informações de dependência entre objetos (exibições, procedimentos e gatilhos) no banco de dados e os objetos (tabelas, exibições e procedimentos) contidos em suas definições. MS SQL SRV 2000. | 
| DECLARE @db_id smallint; set @db_id = DB_ID(N'master'); print @db_id | Retorna o ID do banco de dados ( db_ID ). Muito útil para cruzar as informações com os objetos do sistema | 
| RAISERROR('Erro na SP10.', 16, 1) | Determinando a saida de uma Procedure com erro. | 
| SELECT name, physical_name FROM sys.master_files where database_id = db_id('master') | Lista os arquivos que compõe o banco de dados selecionado, tipicamente os arquivos .mdf e .ldf incluindo seus nomes e pastas. | 
| select * from master..sysmessages | Exibe todas as mensagens de erro emitidas pelo servidor- MS SQL 2000 | 
| select * from sys.messages | Exibe todas as mensagens de erro emitidas pelo servidor- MS SQL 2005 | 
| select * from master..syslogins where isntgroup=0 and isntname=0 | Lista os logins efetuados até o momento no servidor - MS SQL SRV 2000 | 
| select * from sys.sql_logins | Lista os logins efetuados até o momento no servidor - MS SQL SRV 2005 | 
| dbcc checkdb (nome_banco_dados) | Função de teste de bancos | 
| dbcc_chectable(nome_tabela) | Função de teste de bancos de tabelas | 
Notas :
1-Coloquei com fundo azul os recursos que todo administrador de banco de dados tem que manter em sua mente para realizar as tarefas do seu dia-a-dia na atividade.
2-A função DBCC pode tanto verificar como corrigir pequenos erros em tabelas e bancos de dados. Cabe ao administrador se só vai verificar a integridade ou corrigir esses pequenos erros. Esta mudança é feita setando apenas um parâmetro do comando, se deve ou não corrigir. Recomendo ativar a correção mas lembre-se que isto levará mais tempo para ser realizado e deixará a base de dados inativa para ser corrigida.
            alter PROCEDURE LE_ARQUIVO_TEXTO (
            @FileName varchar(255),   
            @Text1 varchar(2000) OUT) AS  
            
            DECLARE @FS int  
            DECLARE @OLEResult int  
            DECLARE @FileID int
        
            EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT  
            IF @OLEResult <> 0 begin
               PRINT 'ERRO na criação do Scripting.FileSystemObject'  
               return
            end
        
            execute @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT, @FileName, 1  
            IF @OLEResult <> 0 begin
               PRINT 'Erro no OpenTextFile'
               return
            end
        
            execute @OLEResult = sp_OAMethod @FileID, 'ReadLine', @Text1 OUT
            IF @OLEResult <> 0 begin
               PRINT 'Erro no Readline'  
               return
            end
        
            declare @dado_lido varchar(8000)
            exec Le_ARQUIVO_TEXTO 'C:\nomearq.TXT',@dado_lido out
            print 'Dado lido:' + @dado_lido
        
            exec sp_configure 'show advanced options',1  
            reconfigure  
            exec sp_configure 'Ole Automation Procedures',1  
            reconfigure  
            exec sp_configure 'show advanced options',0  
            reconfigure
        
A primeira coisa a ser definida é a estrutura fisica dos campos no arquivo texto. Na querie iremos separar esses campos pelo comando substring.
            SET QUOTED_IDENTIFIER OFF 
            GO
            SET ANSI_NULLS ON 
            GO
            
            alter procedure loaddata as
            BEGIN
            declare @query varchar(7000)
            declare @string varchar(1500)
            declare @string1 varchar(500)
            drop table x
            create table x (name varchar(2000))
            set @query ='master.dbo.xp_cmdshell "type C:\SAMPLE_FILE.TXT"'
            insert x exec (@query)
            declare C1 cursor local fast_forward for select name from x;
            open c1
            fetch next from c1 into @string
            while @@FETCH_STATUS = 0
            BEGIN
               fetch next from c1 into @string1
                  if (len(@string1)<>0 or @string1<>null)
                  Begin
                     set @string=@string+@string1
                  END
            
                  ELSE if  @string<>''
                  Begin
                     insert into filedata values(
                        substring(@string,1,16),
                        substring(@string,17,35),
                        substring(@string,52,25),
                        substring(@string,77,25),
                        substring(@string,102,25),
                        substring(@string,127,25),
                        substring(@string,152,25),
                        substring(@string,177,20),
                        substring(@string,197,15),
                        substring(@string,212,15),
                        substring(@string,227,50),
                        substring(@string,277,15),
                        substring(@string,292,17),
                        substring(@string,309,17),
                        substring(@string,326,17),
                        substring(@string,343,17),
                        substring(@string,360,17),
                        substring(@string,377,17),
                        substring(@string,394,3),
                        substring(@string,397,6),
                        substring(@string,403,4),
                        substring(@string,407,6),
                        substring(@string,413,40),
                        substring(@string,453,15),
                        substring(@string,468,1),
                        substring(@string,469,30),
                        substring(@string,499,30),
                        substring(@string,529,30),
                        substring(@string,559,30),
                        substring(@string,588,30),
                        substring(@string,619,30),
                        substring(@string,649,30),
                        substring(@string,679,30),
                        substring(@string,709,30),
                        substring(@string,739,30)
                     )
                     set @string=''
               End -- if @string<>''
            END -- while @@FETCH_STATUS
            
            END --@@FETCH_STATUS = 0
            
            GO
            SET QUOTED_IDENTIFIER OFF 
            GO
            SET ANSI_NULLS ON 
            
            GO
        
            CREATE PROCEDURE GRAVA_ARQUIVO_TEXTO (  
            @FileName varchar(255),   
            @Text1 varchar(2000)) AS  
            
            DECLARE @FS int  
            DECLARE @OLEResult int  
            DECLARE @FileID int  
              
        
            -- criando o file script object no servidor  
            EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT  
            IF @OLEResult <> 0 PRINT 'ERRO na criação do Scripting.FileSystemObject'
        
            --Gravando o texto  
            execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text1  
            IF @OLEResult <> 0 PRINT 'Erro no WriteLine'
            EXECUTE @OLEResult = sp_OADestroy @FileID  
            EXECUTE @OLEResult = sp_OADestroy @FS  
        
exec GRAVA_ARQUIVO_TEXTO 'C:\BKP_LOCAL_SRVX\teste_gravacao.txt','alo, alo...123...isto e um teste'
            --pre-requisito : precisa que o oledb esteja habilitado  
            exec sp_configure 'show advanced options',1  
            reconfigure
            sp_configure
            exec sp_configure 'Ole Automation Procedures',1  
            reconfigure  
            exec sp_configure 'show advanced options',0  
            reconfigure  
        
            GRAVA_ARQUIVO_TEXTO 'C:\BKP_LOCAL_SRVX\dbcc.bat','TESTE'
        
1) Serviço MS SQL Server : É o servidor de banco de dados em sí.
2) Serviço MS SQL Agent : Gerencia Jobs, Alertas e Operators
3) Serviço Ms Distributed Transaction Cordinator (DTS) : Permite que clientes heterogêneos acessem as transações do servidor.
1- SQL Server Enterprise Manager Snap-in MS Management Console (MMC) : Cliente administrativo do servidor. Permite administrar o servidor.
2- SQL Server Client Configuration : Configura os componentes de comunicação entre o cliente e o server como protocolos de rede ativos ou não.
3- SQL Server Performance Monitor : Permite monitorar em real-time as estatísticas de performance do servidor permitindo uma análise administrativa de seu desempenho.
4- SQL Server Profiler : Permite salvar continuamente as atividades do servidor bem como auditoria.
5- SQL Server Query Analyser : Ferramenta gráfica que permite interagir com a base de dados. Permite visualizar o plano de execução da query, as informações de estatísticas e performance do servidor.
6 - SQL Server Service Management : Permite verificar e alterar o estado dos serviços do ms sql ( Iniciar, Parar, pausar)
7 - SQL Server Setup : Permite instalar ou reconfigurar o servidor sql
8- SQL Server Wizards : É uma coleção de ferramentas que guiam os usuários na execução de tarefas complexas.
1 - Gerenciamento de alertas - alert management : Resultado de processos quando um job é completado ( via event log do nt )
2 - Notificações - notifications : Emissão de Email ligado aos alertas
3- Execução de Jobs - job execution : Executa os jobs agendados
4 - Gerenciamento de replicação - Replication Management :Sincroniza os dados entre os servidores.
Versão MS SQL - Versão Framework
        
2003 - 1.0
2005 - 2.0
2008 - 3.5
2010 - 4.0
            exec xp_cmdshell "dir"
            exec xp_loginconfig
            sp_help sysdatabases
            exec xp_msver
        
            SELECT sysobjects.name AS table_name, syscolumns.name AS column_name, 
            systypes.name AS datatype, syscolumns.length AS length
            FROM sysobjects INNER JOIN
            syscolumns ON sysobjects.id = syscolumns.id 
            INNER JOIN systypes ON syscolumns.xtype = systypes.xtype
            WHERE (sysobjects.xtype = 'U')
            ORDER BY sysobjects.name, syscolumns.colid  
        
            SELECT sysobjects.name AS table_name, syscolumns.name AS column_name, 
            systypes.name AS datatype, syscolumns.LENGTH AS LENGTH 
            FROM sysobjects INNER JOIN syscolumns ON sysobjects.id = syscolumns.id 
            INNER JOIN  systypes ON syscolumns.xtype = systypes.xtype
            WHERE (sysobjects.xtype = 'U')ORDER BY sysobjects.name, 
            syscolumns.colid
        
Muitas tarefas de manutenção são feitas em horários de baixa ou nenhuma utilização do servidor. O objetivo é aproveitar esse tempo ocioso para garantir o perfeito funcionamento do servidor amanhã e sempre.
O mais importante é listar as atividades de manutenção a serem executadas e definir o horário que serão executadas levando em conta o tempo que elas demoram para ser executadas. Jamais devemos executar duas tarefas de manutenção ao mesmo tempo especialmente se elas forem competitivas com o mesmo tipo de recurso do servidor.
Abaixo cito um modelo de tarefas e do escalonamento para execução das mesmas
20 hs -> Check da integridade dos bancos de dados ( DBCC CHECKDB )
21 hs -> Compactação dos bancos de dados ( DBCC SHRINKDB )
23:30 hs -> Backup Full das bases agendadas
07:40 hs -> SPs de Atualização dados diários